<?php

namespace app\admin\controller;

use app\admin\controller\Base;
use think\facade\Db;
use think\facade\View;
use think\facade\Request;

/**
 * 航线管理控制器
 * 负责航线信息的增删改查及数据展示
 */
class Shipline extends Base
{
    /**
     * 航线管理首页
     * 展示航线管理页面视图
     * @return \think\response\View 包含航线管理页面的视图响应
     */
    public function index()
    {
        return View::fetch();
    }

    /**
     * 获取航线数据列表
     * 从数据库查询航线信息并格式化输出为表格JSON数据
     * @return void 直接输出JSON格式的表格数据
     */
    public function data()
    {
        $data = Db::name('ship_line')
            ->order('from_city_name asc')
            ->order('to_city_name asc')
            ->paginate(15);
        $items = $data->items();

        return $this->genTableJson($data, $items);
    }

    /**
     * 添加/编辑航线
     * 处理航线添加和编辑表单提交，执行新增或更新操作
     * @return \think\response\View|void  GET请求返回表单视图，POST请求完成操作后跳转
     */
    public function add()
    {
        $request = Request::instance();
        if ($request->isPost()) {
            $post = $request->post();
            if (isset($post['shipline_id']) && $post['shipline_id']) {
                Db::name('ship_line')->where('id', $post['shipline_id'])->update($post);
            } else {
                Db::name('ship_line')->insert($post);
            }
            $this->successJump('success', url('shipline/index'));
        }

        return View::fetch();
    }

    /**
     * 编辑航线页面
     * 根据ID查询航线信息并渲染编辑表单
     * @return \think\response\View 包含航线编辑表单的视图响应
     */
    public function edit()
    {
        $param = Request::get();
        $shipline = Db::name('ship_line')->find($param['id']);
        View::assign('shipline', $shipline);
        return View::fetch();
    }

    /**
     * 删除航线
     * 根据ID从数据库删除指定航线记录
     * @return void 操作完成后跳转至航线列表页
     */
    public function del()
    {
        $shipline_id = Request::post('id');
        Db::name('ship_line')
            ->where('id', $shipline_id)
            ->delete();
        $this->successJump('删除成功', url('shipline/index'));
    }
}
